草庐IT

php - PHP 闭包

全部标签

javascript - 是否有与 PHP 的 include 等效的 Node.js,以便包含的代码可以访问父文件的变量?

我想将我的Node应用程序拆分成几个单独的文件,以使其更加模块化且更易于维护。但是由于无法像PHP等其他语言那样将文件直接“包含”到当前解析的文件中,因此我的“模块”或“单独文件”不会自动访问脚本中定义的变量“需要”他们。我该怎么做?我正在考虑在我的单独文件中做这样的事情:module.exports=function(stuff){//Inowhaveaccessto'stuff'.}但是有点麻烦。我确定有人已经在我之前解决了这个问题,所以...您有什么建议? 最佳答案 跨模块共享变量的最简单方法是将变量分配给全局命名空间对象。声

javascript - Nodejs 闭包变量未在模块中更新

我需要一些帮助来理解NodeJ。我显然缺少一些基本的东西。我有一个类似于下面的模块,使用基本的揭示模块模式......varsomeArray=[];varpublicApi={someArray:someArray,someFunction:someFunction};functionsomeFunction(){someArray=['blue','green'];}module.exports=publicApi;当我使用这个模块时,当我调用someFunction时someArray没有改变...varmyModule=require('myModule');myModule.

javascript - 仅在闭包中定义的模拟/ stub 对象

首先,为了测试我的库,我使用了Mocha和Chai,但有时我可能也需要Sinon。这是图书馆:importServicefrom'service';//athird-partymoduleoutofmycontrolconstservice=Service(...);classMyLib{...uses`service`inabunchofdifferentways......service.put(foo)......service.get(bar)...}exportdefaultMyLib;这基本上是测试文件:importMyLibfrom'../my-lib.js';descr

javascript - JavaScript 中的递归闭包

functionbuildList(list){vari=0;varfirst=function(){console.log("in")console.log(i);}varSecond=function(){console.log("out")first();}returnSecond;}vara=buildList([1,2,3])console.dir(a);a();//Hereclosureiscreatedwhichhasfunctionfirst,Herefirstalsohasoneclosureofitselfthatmeansrecursiveclosure当我在Ch

JavaScript:词法闭包还是其他?

考虑这个脚本:functionObj(prop){this.prop=prop;}varNS={strings:['first','second','third'],objs:[],f1:function(){for(sinthis.strings){varobj=newObj(this.strings[s]);obj.f2=function(){alert(obj.prop);}this.objs.push(obj);}}}NS.f1();NS.objs[0].f2();//thirdNS.objs[1].f2();//thirdNS.objs[2].f2();//third不完全是

javascript - 如何使用javascript中的闭包访问函数内另一个范围内的变量?

我有以下功能makeStopwatch我正在努力通过以更好地理解javascript闭包:varmakeStopwatch=function(){varelapsed=0;varstopwatch=function(){returnelapsed;};varincrease=function(){elapsed++;};setInterval(increase,1000);returnstopwatch;};varstopwatch1=makeStopwatch();varstopwatch2=makeStopwatch();console.log(stopwatch1());cons

javascript - 使用 jQuery 的 each() 在 JavaScript 中更清晰(嵌套)的闭包

我想知道是否有一种更简洁(更简洁)的方法来完成each()在以下JavaScript代码中所做的事情。$(".moreinfodialog").before('Clickformoreinfo.').each(function(){vartemp=this;$(this).prev("a").click(function(){$(temp).dialog("open");returnfalse;});}).dialog({autoOpen:false,modal:true});请注意,最后一次调用对dom元素进行了重新排序,因此.moreinfodialog类不再位于href旁边。顺便

javascript - 区分闭包和局部变量

闭包中的局部函数声明了一个与闭包中存在的同名变量。那么,我们如何从本地函数访问闭包的变量呢?functionclosure(){varxVar;functionfunc1(){varxVar;//howtodistinguishlocalandclosurescopes.returnxVar;}returnfunction(){returnfunc1();};}创建一个私有(private)对象并将私有(private)变量作为该对象的属性可能会有所帮助。但我想知道是否有更好、更简洁的解决方案。作用域链有帮助吗?我已对其进行编辑以使其完全关闭。无论如何,闭包在这里不是很重要,可以考虑将

javascript - 如何将同一闭包下的对象分离到不同的文件中

我的客户有以下结构;varmyObject=(function(){varmainObjectList=[];varglobalObject={init:function(mainObjectId){varlogger={};varutilityObject1={};varutilityObject2={};varmainObject={};mainObjectList.push(mainObject);},//initsomeOtherMethods:function(){}};//globalObjectreturnglobalObject;})();我可以和我的客户说我的对象.i

Javascript 闭包 : Memory Leak

我有一个我不明白的内存泄漏。我编写了一种机制来处理半自动解除绑定(bind)的事件,这应该可以让我轻松清理内存。但在一种情况下,清理不会发生(我使用chrome的“配置文件(内存堆)”来检查是否有剩余的“EventHandler”实例)。我真的不明白为什么会这样。关闭有一些奇怪的东西......seeitinactionwithchromefunctionBind(obj,f){returnfunction(){returnf.apply(obj,arguments);}}functionEventHandler(){this.listeners=newObject();var_lis